package ysf.com.difficulty;

import org.junit.Test;

/**
 * 通配符匹配
 * '?' 可以匹配任何单个字符。
 * '*' 可以匹配任意字符串（包括空字符串）。
 *
 * @author ysf
 * @date 2021/6/19 22:51
 */
public class TenthDemos {


    public static void main(String[] args) {
        String text = "aa";
        String pattern = "a*";
        boolean matchss = isMatchss(text, pattern);
        System.out.println(matchss);
    }

    public static boolean isMatchss(String s, String p) {
        if (s == null || p == null) {
            return false;
        }
        int m = s.length();
        int n = p.length();
        int i = 0;
        int j = 0;
        int star_idx = -1;
        int match = 0;
        while (i < m) {
            if ((j < n) && p.charAt(j) != '*' && isEqual(s.charAt(i), p.charAt(j))) {
                i++;
                j++;
            } else if ((j < n) && p.charAt(j) == '*') {
                star_idx = j;
                match = i;
                j++;
            } else if (star_idx != -1) {
                j = star_idx + 1;
                match++;
                i = match;
            } else {
                return false;
            }
        }
        while (j < n && p.charAt(j) == '*') {
            j++;
        }
        return j == n;
    }

    public static boolean isEqual(char c1, char c2) {
        return c2 == '?' || c1 == c2;
    }


    @Test
    public void test() {

        System.out.println(false && false);
        System.out.println(true && false);
        System.out.println(true && true);
        System.out.println(false || true);

    }


}
